﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Core;
using System.Configuration;

namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmTarjetaPlacasTramiteNuevo : System.Web.UI.Page
    {
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        static List<ListaDocumento> listadocumento;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {

                listadocumento = new List<ListaDocumento>();
                this.ListaOficinaVenta();
                this.ListaTramitador();
                cboTramitador.SelectedIndex = 0;
                dtFechaEntrega.Date = DateTime.Now.Date;
                cboAnio.Value = (DateTime.Now.Year);
                cboMes.Value= DateTime.Now.Month.ToString();

                if (Request.QueryString["ID_TARJETA_PLACA_CAB"] != null) 
                {
                    int ID_TARJETA_PLACA_CAB = int.Parse(Request.QueryString["ID_TARJETA_PLACA_CAB"]);
                    btnBuscarDocumento.Enabled = false;
                    List<T_VEN_TARJETA_PLACA_CAB> lista = new List<T_VEN_TARJETA_PLACA_CAB>();
                    clsT_Ven_Tarjeta_Placa_CabLogic obj = new clsT_Ven_Tarjeta_Placa_CabLogic();
                    lista = obj.Seleccionar(ID_TARJETA_PLACA_CAB);
                    cboTramitador.Value = lista[0].ID_TRAMITADOR.ToString();
                    dtFechaEntrega.Value = lista[0].FEC_INICIO_TRAMITE;
                    txtObservacion.Text = lista[0].OBSERVACIONES;
                    //Mostrar el detalle
                    List<T_VEN_TARJETA_PLACA_DET> listaDet = new List<T_VEN_TARJETA_PLACA_DET>();
                    clsT_Ven_Tarjeta_Placa_DetLogic objDet = new clsT_Ven_Tarjeta_Placa_DetLogic();
                    listaDet = objDet.SeleccionarDetalle(ID_TARJETA_PLACA_CAB);
                    int ID_ORG_VTA = (int)listaDet[0].ID_ORG_VTA;
                    int NRO_FACTURA = (int)listaDet[0].NRO_FACTURA;
                    int NRO_POSICION = (int)listaDet[0].NRO_POSICION;

                    ListarDetalle(ID_ORG_VTA, NRO_FACTURA, NRO_POSICION);

                }
            }
            //this.ListaOficinaVenta();
            //this.ListaTramitador();
        }

        void ListaTramitador() {
            clsT_Ven_Tarjeta_Placa_CabLogic tramitador = new clsT_Ven_Tarjeta_Placa_CabLogic();
            cboTramitador.DataSource = tramitador.listaTramitador();
            
            cboTramitador.TextField = "DES_CORTA";
            cboTramitador.ValueField = "ID_GENERAL_DET";
            cboTramitador.DataBind();
        
        
        
        }

        void ListaOficinaVenta() {
            clsTd_Oficina_VentaLogic clstd_oficina_ventaLogic = new clsTd_Oficina_VentaLogic();
            cboOficinaVenta.DataSource = clstd_oficina_ventaLogic.lista();
            cboOficinaVenta.TextField = "DES_OFI_VTA";
            cboOficinaVenta.ValueField = "ID_OFI_VTA";
            cboOficinaVenta.DataBind();
        
        
        }

        void FiltroOficinaVenta() {

            try
            {
                clsT_Ven_Tarjeta_Placa_CabLogic clst_ven_tarjeta_placa_cablogic = new clsT_Ven_Tarjeta_Placa_CabLogic();
                grdListaFiltroOficinaVenta.DataSource = clst_ven_tarjeta_placa_cablogic.FiltroxOficinaVenta(Convert.ToInt32(cboOficinaVenta.SelectedItem.Value),Convert.ToInt32(cboAnio.SelectedItem.Value),Convert.ToInt32(cboMes.SelectedItem.Value));
                grdListaFiltroOficinaVenta.DataBind();
            }
            catch {}
        
        
        }

        public struct ListaDocumento
        {

            public int id_tarjeta_placa_det { get; set; }
            public int id_tarjeta_placa_cab { get; set; }
            public int id_org_vta { get; set; }
            public int nro_factura { get; set; }
            public int nro_posicion { get; set; }
            public string fecha_recepcion_tarjeta { get; set; }
            public string nro_placa { get; set; }
            public string fecha_recepcion_placa { get; set; }
            public string nro_poliza { get; set; }
            public string DES_CLIENTE { get; set; }
            public string des_modelo { get; set; }
            public string nro_vin { get; set; }
            public string nro_motor { get; set; }
            public string ref_embarque { get; set; }
            public string nro_caja { get; set; }
            public string fec_poliza { get; set; }
            public string FEC_FACTURA { get; set; }
        }

        bool comaparar()
        {

            foreach (ListaDocumento row in listadocumento)
            {
                for (int i = 0; i < grdListaFiltroOficinaVenta.VisibleRowCount; i++)
                {

                    if (grdListaFiltroOficinaVenta.Selection.IsRowSelected(i))
                    {

                        if (row.nro_factura == Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_FACTURA")) && row.id_org_vta == Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "ID_ORG_VTA")) && row.nro_posicion == Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_POSICION")))
                      {
                       
                        return true;
                      
                    }
             }

     }

               
  }

 return false;


}

        void ListarDetalle(int ID_ORG_VTA, int NRO_FACTURA, int NRO_POSICION) 
        {
            try
            {
                clsT_Ven_Tarjeta_Placa_CabLogic cab = new clsT_Ven_Tarjeta_Placa_CabLogic();
                gv.DataSource = cab.SeleccionarDetalle(ID_ORG_VTA, NRO_FACTURA, NRO_POSICION);
                gv.DataBind();
                grdListaDocumentos.Visible = false;
            }
            catch
            {


            }
        }

        void AgregarDocumentos() {

            try
            {
                clsT_Ven_Tarjeta_Placa_CabLogic cab = new clsT_Ven_Tarjeta_Placa_CabLogic();
                int id_cab=cab.UltimoNumeroCab() + 1;

                ListaDocumento list = new ListaDocumento();


                for (int i = 0; i < grdListaFiltroOficinaVenta.VisibleRowCount; i++)
                {

                    if (grdListaFiltroOficinaVenta.Selection.IsRowSelected(i))
                    {
                        list.id_org_vta = Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "ID_ORG_VTA"));
                        list.nro_factura = Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_FACTURA"));
                        list.nro_posicion = Convert.ToInt32(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_POSICION"));
                        list.nro_poliza = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_POLIZA"));
                        list.DES_CLIENTE = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "DES_CLIENTE"));
                        list.des_modelo = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "DES_MODELO"));
                        list.nro_vin = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_VIN"));
                        list.nro_motor = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_MOTOR"));
                        list.nro_caja = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "NRO_CAJA"));
                        list.ref_embarque = Convert.ToString(grdListaFiltroOficinaVenta.GetRowValues(i, "REF_EMBARQUE"));
                        list.fec_poliza = Convert.ToDateTime(grdListaFiltroOficinaVenta.GetRowValues(i, "FEC_POLIZA")).ToString("dd/MM/yyyy");
                        list.FEC_FACTURA = Convert.ToDateTime(grdListaFiltroOficinaVenta.GetRowValues(i, "FEC_FACTURA")).ToString("dd/MM/yyyy");
                        list.id_tarjeta_placa_cab =id_cab;
                        listadocumento.Add(list);                        
                        grdListaDocumentos.DataSource = listadocumento;
                        grdListaDocumentos.DataBind();
                    }

                }


            }
            catch
            {
                
               
            }

           

        
        }

        int  id_cab=0;

        void GrabarCab() {
            try
            {
                clsT_Ven_Tarjeta_Placa_CabLogic cab = new clsT_Ven_Tarjeta_Placa_CabLogic();
                T_VEN_TARJETA_PLACA_CAB t_ven_tarjeta_placa_cab = new T_VEN_TARJETA_PLACA_CAB();

                t_ven_tarjeta_placa_cab.ID_TRAMITADOR = Convert.ToInt32(cboTramitador.SelectedItem.Value);
                t_ven_tarjeta_placa_cab.FEC_INICIO_TRAMITE = dtFechaEntrega.Date;
                t_ven_tarjeta_placa_cab.OBSERVACIONES = txtObservacion.Text;

                if (Request.QueryString["ID_TARJETA_PLACA_CAB"] != null)
                {
                    int ID_TARJETA_PLACA_CAB;
                    ID_TARJETA_PLACA_CAB = int.Parse(Request.QueryString["ID_TARJETA_PLACA_CAB"]);
                    t_ven_tarjeta_placa_cab.ID_TARJETA_PLACA_CAB = ID_TARJETA_PLACA_CAB;
                    if (cab.Modificar(t_ven_tarjeta_placa_cab))
                    {
                        lblmsj.Text = "Se actualizó correctamente";
                        popupmsj.ShowOnPageLoad = true;
                    }
                    else 
                    {
                        lblmsj.Text = "Error al grabar los datos";
                        popupmsj.ShowOnPageLoad = true;
                    }
                }
                else
                {
                    t_ven_tarjeta_placa_cab.ID_TARJETA_PLACA_CAB = cab.UltimoNumeroCab() + 1;
                    if (cab.Insertar(t_ven_tarjeta_placa_cab))
                    {

                        id_cab = t_ven_tarjeta_placa_cab.ID_TARJETA_PLACA_CAB;
                        this.GrabarDet();
                        if (Globales.msjAplicacion == "c")
                        {
                            lblmsj.Text = "Se grabo correctamente";
                            popupmsj.ShowOnPageLoad = true;

                        }
                        else
                        {

                            lblmsj.Text = "Error al grabar los datos de la grilla : " + Globales.msjSql;
                            popupmsj.ShowOnPageLoad = true;

                        }

                    }

                }
            }
            catch (Exception ex)
            {
                lblmsj.Text = ex.Message;
                popupmsj.ShowOnPageLoad = true;
            }
        
        
        
        }

        void GrabarDet() {
            try
            {
                clsT_Ven_Tarjeta_Placa_DetLogic det = new clsT_Ven_Tarjeta_Placa_DetLogic();

                foreach (ListaDocumento item in listadocumento)
                {
                    int ID_TARJETA_PLACA_DET = det.UltimoNumeroDet()+1;
                    int ID_TARJETA_PLACA_CAB = id_cab;
                    int ID_ORG_VTA=item.id_org_vta;
                    int NRO_FACTURA=item.nro_factura;
                    int NRO_POSICION = item.nro_posicion;
                    if (id_cab != 0)
                    {
                        det.Insertar(ID_TARJETA_PLACA_DET, ID_TARJETA_PLACA_CAB, ID_ORG_VTA, NRO_FACTURA, NRO_POSICION);
                    }
                }





            }
            catch 
            {
                
               
            }
        
        
        }

        protected void btnFiltrar_Click(object sender, EventArgs e)
        {
            this.FiltroOficinaVenta();
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            this.AgregarDocumentos();
            PCbusquedaDocumentos.ShowOnPageLoad = false;
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            this.GrabarCab();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Minorista/wFrmTarjetaPlacasActualizar.aspx?id="+idNegocio);
        }

        protected void grdListaFiltroOficinaVenta_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.FiltroOficinaVenta();
        }

        protected void grdListaFiltroOficinaVenta_PageIndexChanged(object sender, EventArgs e)
        {
            this.FiltroOficinaVenta();
        }

        protected void btnBuscarDocumento_Click(object sender, EventArgs e)
        {

        }

    }
}